package menu.menu;

import java.util.Collection;
import java.util.Iterator;

/**
 * Clase que representa la bandeja actual del cliente.
 * Lo que lleva agregado (como un carrito de compras).
 * @author JSR
 * @version $Id: Bandeja.java 26 2010-09-29 22:21:35Z batianusrey $
 */
public class Bandeja
{
    //---------------------------------------
    // Atributos
    //---------------------------------------

    /**
     * Los items a pedir, lo que se lleva actualmente.
     */
    private Collection<IItem> itemsAPedir;

    //---------------------------------------
    // Constructor
    //---------------------------------------
    //---------------------------------------
    // Getters y Setters
    //---------------------------------------
    public Collection<IItem> getItemasAPedir()
    {
        return itemsAPedir;
    }
    //---------------------------------------
    // Métodos
    //---------------------------------------

    /**
     * Agrega un item a la bandeja.<br>
     * <b>Pre:</b> El item que se pasa por parámetro existe y no es nulo.<br>
     * <b>Pos:</b> Se clona el item que pasa por parámetro y se agrega.
     * @param item
     */
    public void agregarItemABandeja( IItem item )
    {
        IItem nuevoItem = item.clonarItem();
        itemsAPedir.add( nuevoItem );
    }

    /**
     * Elimina un item de la bandeja.<br>
     * <b>Pre:</b> El item que se pasa por parámetro ya existe en el arreglo <code>itemasAPedir</code>.<br>
     * <b>Pos:</b> El Item queda eliminado del arreglo.
     * @param item
     */
    public void eliminarItemDeBandeja( IItem item )
    {
        itemsAPedir.remove( item );
    }

    /**
     * Método que permite personalizar un item.<br>
     * <b>Pre:</b> El item existe en la bandeja.<br>
     * <b>Pos:</b> El item en la bandeja queda con los cambios realizados.
     * @param item - Item con los cambios deseados
     */
    public void personalizarItem( IItem item )
    {
        for( Iterator<IItem> it = itemsAPedir.iterator(); it.hasNext(); ) {
            IItem actual = it.next();
            if( actual.getNombreItem().equals( item.getNombreItem() ) ) {
                actual = item;
            }
        }
    }
}
